#include <iostream>
using namespace std;

int main() {
  string s{"abc"};
  cout << "#" << s << "#" << s.c_str() << "#" << endl;
  s = "";
  cout << "#" << s << "#" << s.c_str() << "#" << endl;
  // 长为L的string，索引范围是[0, L) // C++区间尽量用左闭右开方式
  // s现在是空串，可用索引范围[0, 0) 没有可用的索引位置
  s[0] = 'X'; // 赋值越界了，覆盖了'\0'结束符！
  // 输出s推测是根据长度判了空，所以输出空串
  // 但用s.c_str()以C字符串的方式输出就暴露了错误。
  // 幸好之前的空间没释放，X后面有"bc\0"，程序没有崩溃。
  cout << "#" << s << "#" << s.c_str() << "#" << endl;
}
